import { defineStore } from 'pinia'
import type { StoreBaseInfo } from '@/types/store'

interface StoreInfoState {
  storeInfo: StoreBaseInfo | null
}

export const useStoreInfoStore = defineStore('storeInfo', {
  state: (): StoreInfoState => ({
    storeInfo: null
  }),

  getters: {
    getStoreInfo: (state): StoreBaseInfo | null => state.storeInfo,
    // 通用获取字段方法
    getField: (state) => (field: keyof StoreBaseInfo) => {
      return state.storeInfo ? state.storeInfo[field] : undefined
    },
    isStoreInfoLoaded: (state): boolean => !!state.storeInfo
  },

  actions: {
    setStoreInfo(info: StoreBaseInfo) {
      this.storeInfo = info
    },

    setStoreStatus(status: number) {
      if (!this.storeInfo) return
      this.storeInfo.status = status
    },

    updateStoreInfoField<K extends keyof StoreBaseInfo>(field: K, value: StoreBaseInfo[K]) {
      if (this.storeInfo) {
        this.storeInfo[field] = value
      }
    },

    clearStoreInfo() {
      this.storeInfo = null
    }
  }
})